// 知识点1：在虚派生中，虚基类由最底层的派生类初始化，否则将会在多条继承路径上被重复初始化

// 知识点2：只要我们能创建虚基类的派生类对象，该派生类的构造函数就必须初始化它的虚基类

// 知识点3：首先用最底层派生类的构造函数的初始值初始化该对象的虚基类子部分，虚基类优先构造，析构函数执行顺序与构造函数相反

// 答案：

// 构造顺序：Class、Base、D1、D2、MI、Class

// 析构顺序相反

// 1个Base部分，2个Class部分

// (a)、错误，Class是Base的基类，而pb是Base类
// (b)、正确，基类Class可以指向所有子类
// (c)、错误、pb是Base类，MI是Base的子类
// (d)、正确、D2是MI的基类